#ifndef RFSWPROCESSCONTROLDLL_GLOBAL_H
#define RFSWPROCESSCONTROLDLL_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(RFSWPROCESSCONTROLDLL_LIBRARY)
#  define RFSWPROCESSCONTROLDLLSHARED_EXPORT Q_DECL_EXPORT
#else
#  define RFSWPROCESSCONTROLDLLSHARED_EXPORT Q_DECL_IMPORT
#endif

#define NonReverse 1
#define Reverse -1

typedef struct RobotData{
    double RIst[6];
    double AIst[6];
    double ATor[6];
}ST_RobotData;

typedef struct ForceSensorData{
    double SensorData[6];
}ST_ForceSensorData;

typedef struct LaserSensorData{
    double SensorData[6];
}ST_LaserSensorData;

class RFSWPROCESSCONTROLDLLSHARED_EXPORT RFSWProcessControlDLL{
public:
    RFSWProcessControlDLL(){}
    ~RFSWProcessControlDLL(){}

    virtual short RobotOffsetDirectionSetting(short Y = NonReverse, short Z = NonReverse) = 0;
};

class RFSWPROCESSCONTROLDLLSHARED_EXPORT RFSWSimpleForceControlDLL{
public:
    RFSWSimpleForceControlDLL(){}
    ~RFSWSimpleForceControlDLL(){}

    virtual short RobotOffsetDirectionSetting(short Y = NonReverse, short Z = NonReverse) = 0;
    virtual short SimpleFzForceControlMatrixMode(double FzSet = 0, double FzReal = 0, double& RIstTTSZ) = 0;
    virtual short SimpleFzForceControlMatrixModeParamatersSetting(double Coefficients = 0.1) = 0;
    virtual short SimpleFzForceControlPIDMode(double FzSet = 0, double FzReal = 0, double& RIstTTSZ) = 0;
    virtual short SimpleFzForceControlPIDParamatersSetting(double KP = 0,double KI = 0, double KD = 0) = 0;
};

extern "C" RFSWPROCESSCONTROLDLLSHARED_EXPORT RFSWProcessControlDLL* GetRFSWProcessControlInstance();
extern "C" RFSWPROCESSCONTROLDLLSHARED_EXPORT RFSWSimpleForceControlDLL* GetRFSWSimpleForceControlInstance();

#endif // RFSWPROCESSCONTROLDLL_GLOBAL_H
